#ifndef __PERSON_H
#define __PERSON_H
#pragma once
#include <iostream>
#include <string>
using namespace std;

class Person
{
public:
		enum eGender { male = 1, female };

		const	string		getFirstName()								const;
		const	string		getLastName()								const;
		friend	ostream&	operator<<(ostream& os, const Person& d);
		virtual void		toOs(ostream& os, bool isFullPrint = true)	const;
				bool		operator==(const Person& other)				const;
		virtual				~Person();

protected:
		string	firstName;
		string	lastName;
		int		age;
		eGender gender;

		Person(const string firstName, const  string lastName, int age, const eGender gender);

private:
		Person(const Person& person);
		void operator=(const Person& other);
		const static char* GenderDefinitions[];
};

#endif